/*
 * @Author: new-wang
 * @Date: 2025-06-30 09:21:03
 * @LastEditors: new-wang
 * @LastEditTime: 2025-09-02 16:51:42
 * @FilePath: \nest-demo\src\app.module.ts
 * @Description: 根Module
 */
import { Global, Module } from '@nestjs/common'
// import { AppController } from './app.controller'
// import { AppService } from './app.service'

// 引入主模块
import { MainModule } from './module/main/main.module';
import { AuthModule } from './module/system/auth/auth.module';

// 配置模块
import { ConfigModule, ConfigService } from '@nestjs/config';
import configuration from './config';

// 数据库 TypeORM 集成
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';

@Global()
@Module({
  imports: [

    // 主模块
    MainModule,
    AuthModule,

    // 配置模块
    ConfigModule.forRoot({
      cache: true,
      isGlobal: true,
      load:[configuration]
    }),

    // TypeORM 配置
    // TypeOrmModule.forRoot({
    //   type: 'mysql',
    //   host: 'localhost',
    //   port: 3306,
    //   username: 'root',
    //   password: 'root',
    //   database: 'test',
    //   entities: [],
    //   synchronize: true
    // }),
    // 使用异步配置并读取配置文件
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService:ConfigService) => {
        return {
          type: 'mysql',
          // entities: [`${__dirname}/**/*.entity{.ts,.js}`],
          entities: [`${__dirname}/**/*.entity{.ts,.js}`, `${__dirname}/entityAll/**/*{.ts,.js}`],
          autoLoadEntities: true,
          // keepConnectionAlive: true,
          timezone: '+08:00', // 设置时区
          ...configService.get('db.mysql'), // 从配置文件中获取数据库配置
          synchronize: false, // 仅在开发环境中使用，生产环境请慎用
        } as TypeOrmModuleOptions
      },
    }),

  ],
  // controllers: [AppController],
  // providers: [AppService],
})
export class AppModule {}
